package com.aiti.lulian.vo;

import com.aiti.lulian.entity.CardBusinessCollaborator;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("商机")
public class CommunicateInfoVo {

    /**
     * ID（主键）
     */
    @ApiModelProperty("ID")
    private String baseId;

    /**
     * 商机名称
     */
    @ApiModelProperty("商机名称")
    private String productName;

    /**
     * 联系人
     */
    @ApiModelProperty("联系人")
    private String callName;

    /**
     * 联系方式
     */
    @ApiModelProperty("联系方式")
    private String phone;

    /**
     * 其他内容
     */
    @ApiModelProperty("其他内容")
    private String descInfo;

    /**
     * 来源
     */
    @ApiModelProperty("来源")
    private String source;

    /**
     * 企业Id
     */
    @ApiModelProperty("企业ID")
    private String companyId;

    /**
     * 企业名称
     */
    @ApiModelProperty("企业名称")
    private String companyName;

    /**
     * 销售负责人ID
     */
    @ApiModelProperty("销售负责人ID")
    private String salesHeadId;

    /**
     * 商机状态（'0'：沟通中，'1'：谈判中，'2'：已完成）
     */
    @ApiModelProperty("商机状态")
    private String status;

    /**
     * 类型（'1'：属于收到的商机，'2'：属于后台新增的商机）
     */
    @ApiModelProperty("类型")
    private String type;

    /**
     * 是否已删除（'0'：存在，'1'：已删）
     */
    @ApiModelProperty("是否已删除")
    private String isDel;

    /**
     * 创建者
     */
    @ApiModelProperty("创建者")
    private String creator;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date baseCreateTime;

    /**
     * 更新者
     */
    @ApiModelProperty("更新者")
    private String updateBy;

    /**
     * 更新时间
     */
    @ApiModelProperty("更新时间")
    private Date baseUpdateTime;

    @ApiModelProperty("负责人名称")
    private String directorName;

    @ApiModelProperty("客户id")
    private String customerId;

    @ApiModelProperty("询盘id")
    private String inquiryId;

    @ApiModelProperty("商机类型")
    private String communicateType;

    @ApiModelProperty("商机来源")
    private String communicateSource;

    @ApiModelProperty("成交进度")
    private String transactionProgress;

    @ApiModelProperty("备注")
    private String remark;

    private String transactionProgressName;

    private String communicateTypeName;

    private String communicateSourceName;
    @ApiModelProperty("联系人姓名")
    private String contactName;
    private String customerCompanyName;
    private String customerName;
    private String inquiryName;
    private String directorId;
    private String communicateStatusName;
    private String communicateStatus;
    private String confirmStatus;

    private String deptId;
    private String deptName;
    private String followUpStage;
    private String collaboratorUserId;
    private String collaboratorUserName;
    private BigDecimal estimateSaleAmount;
    @ApiModelProperty("预计签单时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date estimateSignTime;

    @ApiModelProperty("商机获取时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date businessAquireTime;

    @ApiModelProperty("下次跟进时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date nextFollowUpTime;

    List<CardBusinessCollaborator> collaboratorList;

    private String attachment;

    private String followUpRecord;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date realFollowUpTime;

    private String supplyUrl;
    //来源id
    private String communicateFromBaseId;

    @ApiModelProperty("商机来源.默认值0：原来的数据，1：询价单，2：招募单，3：招标信息")
    private Integer communicateFrom;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date lastFollowUpTime;

}